﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Platform.ObjectModel;
using Platform.Storage.Entity;

namespace Platform.Linq
{

	/// <summary>
	/// Realiza a materialização do documento que foi persistido
	/// </summary>
	public interface IDataObjectBuilder
	{

		/// <summary>
		/// Incluío o valor do campo no documento que está sendo montado
		/// </summary>
		/// <param name="field"></param>
		void SetField( FieldValue field );

		/// <summary>
		/// 
		/// </summary>
		/// <param name="relationship"></param>
		/// <param name="childDocument"></param>
		void SetRelation( DataObjectRelationship relationship, DocumentFlake childDocument );

		/// <summary>
		/// Obtém a instância do objeto que foi criado já com os valores passados
		/// </summary>
		/// <returns></returns>
		DataObjectFlake GetDocument();
	}
}
